Примечание. ShaderLabязык Unity для определения структуры объектов Shader. Подробнее
See in Словарь на этой странице является устаревшей и задокументирован только для обратной совместимости. Если ваш шейдерПрограмма, работающая на графическом процессоре. Подробнее
См. в Словарь исходный файл включает код HLSL, Unity полностью игнорирует эти команды. Если исходный файл шейдера не включает код HLSL, Unity компилирует эти команды в обычные программы шейдера при импорте.
Совместимость конвейера рендеринга
Название функции | Встроенный конвейер рендеринга | Универсальный конвейер рендеринга (URP) | Конвейер рендеринга высокого разрешения (HDRP) | Пользовательский SRP |
---|---|---|---|---|
Legacy lighting | Да | Нет | Нет | Нет |
Обзор
Параметры материала и освещения используются для управления встроенным освещением вершин. Освещение вершин — это стандартная модель освещения Direct3D/OpenGL, которая вычисляется для каждой вершины. Подсветка включена включает его. На освещение влияет МатериалАктив, определяющий способ визуализации поверхности. Подробнее
См. в блоке Словарь, ColorMaterial и Отдельное отражение команд.
Окрашивание и освещение вершин — это первый эффект, вычисляемый для любой визуализируемой геометрии. Он работает на уровне вершин и вычисляет базовый цвет, который используется перед применением текстур.
Синтаксис
Команды верхнего уровня определяют, использовать ли фиксированное функциональное освещение или нет, а также некоторые параметры конфигурации. Основная настройка находится в блоке Материал, подробно описанном ниже.
Цвет
Color color
Задает для объекта сплошной цвет. Цвет представляет собой либо четыре значения RGBA в скобках, либо имя свойства цвета в квадратных скобках.
Материал
Material {Material Block}
Блок материала используется для определения свойств материала объекта.
Освещение
Lighting On | Off
Чтобы настройки, заданные в блоке «Материал», действовали, необходимо включить «Подсветку» с помощью команды Подсветка включена. Если вместо этого освещение выключено, цвет берется прямо из команды Color.
Отдельное отражение
SeparateSpecular On | Off
Эта команда добавляет зеркальное освещение в конец прохода шейдера, поэтому текстурирование не влияет на зеркальное освещение. Действует только при использовании Подсветка включена.
Материал цвета
ColorMaterial AmbientAndDiffuse | Emission
Заставляет использовать цвет каждой вершины вместо цветов, заданных в материале. AmbientAndDiffuse заменяет значения Ambient и Diffuse материала; Эмиссия заменяет значение эмиссии материала.
Материальный блок
Здесь содержатся настройки реакции материала на свет. Любое из этих свойств можно не указывать, и в этом случае по умолчанию они будут черными (т. е. не будут иметь никакого эффекта).
Рассеянный цвет. Компонент рассеянного цвета. Это основной цвет объекта.
Цвет окружающей среды: компонент цвета окружающей среды. Это цвет объекта, когда на него падает окружающий светСвет, который не исходит ни с какого определенного направления и способствует равномерный свет во всех направлениях сцены. Подробнее
См. в Словаре наборе в Окно освещения.
Цвет отраженияЦвет отражения.
См. в Словарь: цвет бликов объекта.
Количество блеска: резкость блика, от 0 до 1. При 0 вы получаете огромный блик, очень похожий на рассеянное освещение, при 1 вы получаете крошечное пятнышко.
Цвет излучения: цвет объекта, когда на него не падает свет.
Полный цвет света, падающего на объект:
Ambient * Настройка интенсивности окружающего освещения + (Светлый цвет * Рассеянный + Светлый цвет * Отражение) + Излучение
Световые части уравнения (в скобках) повторяются для всех источников света, попадающих на объект.
Обычно вы хотите, чтобы цвета Diffuse и Ambient были одинаковыми (все встроенные шейдеры делают это).
Примеры
Всегда отображать объект в чистом красном цвете:
Shader "Solid Red" {
SubShader {
Pass { Color (1,0,0,0) }
}
}
Базовый шейдер, который окрашивает объект в белый цвет и применяет вершинное освещение:
Shader "VertexLit White" {
SubShader {
Pass {
Material {
Diffuse (1,1,1,1)
Ambient (1,1,1,1)
}
Lighting On
}
}
}
Расширенная версия, добавляющая цвет материала в качестве свойства, видимого в Инспекторе материаловОкно Unity, в котором отображается информация о выбранном в данный момент GameObject, активы или настройки проекта, позволяющие просматривать и редактировать значения. Дополнительная информация
См. в Словарь:
Shader "VertexLit Simple" {
Properties {
_Color ("Main Color", COLOR) = (1,1,1,1)
}
SubShader {
Pass {
Material {
Diffuse [_Color]
Ambient [_Color]
}
Lighting On
}
}
}
И, наконец, полноценный шейдер с подсветкой вершин (см. также SetTexture справочную страницу):
Shader "VertexLit" {
Properties {
_Color ("Main Color", Color) = (1,1,1,0)
_SpecColor ("Spec Color", Color) = (1,1,1,1)
_Emission ("Emmisive Color", Color) = (0,0,0,0)
_Shininess ("Shininess", Range (0.01, 1)) = 0.7
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Pass {
Material {
Diffuse [_Color]
Ambient [_Color]
Shininess [_Shininess]
Specular [_SpecColor]
Emission [_Emission]
}
Lighting On
SeparateSpecular On
SetTexture [_MainTex] {
Combine texture * primary DOUBLE, texture * primary
}
}
}
}